/**
 * 对象数组去重
 * 
 * 传入需要去重的对象数组和唯一键名
 * 
 * @param {Array} arr - 需要去重的对象数组
 * @param {String} key - 对象的唯一标识符
 * @returns {Array} 去重后的数组
 */
export function uniqueArray (arr, key) {
  const seen = new Set();
  return arr.filter(item => {
    const k = item[key];
    return seen.has(k) ? false : seen.add(k);
  })
}
/**
 * 比较两个数组，找出新增或删除的元素。
 * 
 * 传入新数组和旧数组
 * 
 * @param {Array} newArray - 新数组
 * @param {Array} oldArray - 旧数组
 * @returns {{key: boolean, item: any}} - 返回的对象，key为true表示新增，false表示删除，item为新增或删除的元素
 */
export function compareArrays(newArray, oldArray) {
  const newSet = new Set(newArray);
  const oldSet = new Set(oldArray);
  // 找出新增的元素
  const addedItem = [...newSet].find(item => !oldSet.has(item));
  // 找出删除的元素
  const removedItem = [...oldSet].find(item => !newSet.has(item));
  if (addedItem !== undefined) {
    return { key: true, item: addedItem };
  } else if (removedItem !== undefined) {
    return { key: false, item: removedItem };
  } else {
    // 没有变化返回null（尽量不要使用，避免出现查找obj的key时出现空指针）
    return null; 
  }
}